import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    // 存储用户数据
    userInfo: [],
    // 存储商家信息
    shopLis: [],
    // 获取商家评价
    shopRatings: [],
    // 获取商家商品数组
    shopGoods: []
  },
  mutations: {
    addUsers(state, data) {
      state.userInfo = data
    },
    logOutUser(state) {
      state.userInfo = []
    },
    // 获取商家信息
    getGoodsInfo(state, data) {
      state.shopLis = data
    },
    // 获取评论信息
    getGoodsRatings(state, data) {
      state.shopRatings = data
    },
    // 获取商品数组
    getGoods(state, data) {
      state.shopGoods = data
    },
    // 添加商品数量
    addShopGoods(state, food) {
      if (!food.count) {
        // food.count = 1// 没有属性绑定
        // 对象
        // 对象名
        // 属性名
        Vue.set(food, 'count', 1)
      } else {
        food.count++
      }
    },
    // 减少购物车商品数量
    subShopGoods(state, food) {
      if (food.count) {
        food.count--
      }
    }
  },
  actions: {
    // 异步存储用户数据
    addUsersAsync(context, step) {
      context.commit('addUsers', step)
    },
    // 异步获取用户登录信息
    logOutAsync(context) {
      context.commit('logOutUser')
    },
    // 异步获取商家列表信息
    getShopLisAsync(context, step) {
      context.commit('getGoodsInfo', step)
    },
    // 异步获取商品数组
    getGoodsAsync(context, step) {
      context.commit('getGoods', step)
    },
    // 异步获取评价列表
    getGoodsRatingsAsync(context, step) {
      context.commit('getGoodsRatings', step)
    },
    // 同步更新购物车数量
    addFoodsNum(context, food) {
      context.commit('addShopGoods', food)
    },
    // 减少商品数量
    subFoodsNum(context, food) {
      context.commit('subShopGoods', food)
    }
  },
  modules: {}
})
